package py.fpuna.ii.electiva2.facade;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import py.fpuna.ii.electiva2.dto.ClienteDTO;
import py.fpuna.ii.electiva2.dto.ProductoDTO;
import py.fpuna.ii.electiva2.dto.VentaDTO;
import py.fpuna.ii.electiva2.entity.Cliente;
import py.fpuna.ii.electiva2.entity.Producto;
import py.fpuna.ii.electiva2.interfaces.ClienteEAO;
import py.fpuna.ii.electiva2.interfaces.ProductoEAO;
import py.fpuna.ii.electiva2.interfaces.VentaEAO;
import py.fpuna.ii.electiva2.interfaces.VentaFacadeLocal;
import py.fpuna.ii.electiva2.interfaces.VentaFacadeRemote;

/**
 *
 * @author gonzaleza
 */
@Stateless
public class VentaFacadeBean implements VentaFacadeRemote, VentaFacadeLocal {

    @EJB
    private ClienteEAO cliEao;

    @EJB
    private ProductoEAO prodEao;

    @EJB
    private VentaEAO venEao;

    public List<ClienteDTO> listarClientes() {
        List <ClienteDTO> listClientesRes = new ArrayList<ClienteDTO>();
        listClientesRes = cliEao.findAll();
        return listClientesRes;
    }

    public List<ProductoDTO> listarProductos() {
        List <ProductoDTO> listProdRes = new ArrayList<ProductoDTO>();
        listProdRes = prodEao.findAll();
        return listProdRes;
    }

    public String createVenta(VentaDTO ventadto, Integer codProducto, Integer idcliente) {
        String retorno = "";
        try{
             VentaDTO venta = new VentaDTO();

             venta.setVentCantidad(ventadto.getVentCantidad());
             venta.setVentCliente(null);
             venta.setVentProducto(null);

             Producto prod = new Producto();
             prod = prodEao.findE(codProducto);

             Cliente cliente = new Cliente();
             cliente = cliEao.findE(idcliente);

             //una venta disminuye el stock
             Integer cant = prod.getProdCantidad() - venta.getVentCantidad();


             if ((cant.compareTo(0)== 0) || (cant.compareTo(0)> 0)){

                  prod.setProdCantidad(cant);

                  //puedo vender porque tengo todavia en mi stock
                 if(venEao.create(venta,prod,cliente).equalsIgnoreCase("OK")){
                     retorno = "true";
                     prodEao.editE(prod);
                 }

             }else{
                retorno = "false";   //no puedo vender
             }

        }catch(Exception e) {
            e.printStackTrace();
            retorno = "false";
        } finally {
            return retorno;
        }
    }

    public List<VentaDTO> listarVenta() {
        List <VentaDTO> listRes = new ArrayList<VentaDTO>();
        listRes = venEao.findAll();
        return listRes;
    }

}
